#include <iostream>

// 命名空间的使用
/*
	1、通过作用域运算符:: 使用命名空间
*/
namespace X
{
	class Y
	{
		static int i;
	public:
		void f();
	};
	
	class Z;
	void func();
}

int X::Y::i = 9;

class X::Z {
	int u, v, w;
public:
	Z(int i);
	int g();
}; 


X::Z::Z(int i) { 
	u = v = w = i; 
}

int X::Z::g(){ 
	return u = v = w = 0;
}

void X::func() {
	X::Z a(1); // object
	a.g();
}

/*
	2、直接使用整个命名空间
*/
namespace calculator 
{
	double Add(double x, double y) { return x + y; }
	void Print(double x) { std::cout << x; } 

}

using namespace calculator; // Using Directive

int main() { 
	
	double a, b;
	std::cin >> a >> b;
	
	//2、直接使用
	Print(::Add(a, b));
	Print(Add(a, b)); // 可省略::
	
/*
	3、直接使用命名空间中的 个别方法
*/
	using X::Y;
	Y y;
	
	return 0;
}